草庐IT

C++ 性能 std::array 与 std::vector

全部标签

c# - C# 中的 String.Join 性能问题

我一直在研究向我提出的一个问题:如何编写一个将字符串作为输入并返回字符之间有空格的字符串的函数。该函数将被编写为在每秒调用数千次时优化性能。我知道.net有一个名为String.Join的函数,我可以将空格字符作为分隔符与原始字符串一起传递给该函数。除非使用String.Join,否则我可以使用StringBuilder类在每个字符后附加空格。完成此任务的另一种方法是声明一个包含2*n-1个字符的字符数组(您必须为空格添加n-1个字符)。可以在一个循环中填充字符数组,然后传递给String构造函数。我编写了一些.net代码,这些代码使用参数"Hello,World"运行这些算法中的每一

c# - 使用资源文件 (.resx) 时的性能开销

请注意,我知道有关此主题的以下问题:Arethereanyperformanceissuesorcaveatswithresource(.resx)files?Arestringresources(.resx)propertieskeptinmemory?等。但是,我觉得这些问题的答案都不令人满意(不够具体)。我也知道MSDN有关此主题的页面,但这些页面似乎也忽略了有关使用资源文件的开销的技术信息。我的困境是我们即将着手对相当大的WinForms应用程序进行本地化。例如,在这个阶段,我关心的是从嵌套循环中访问.resx文件资源的性能。目前,对于我们已本地化的一小部分代码(DataGri

c# - Array 类和 Enum.GetValues() 的简单形式

我正在使用静态方法Enum.GetValues(typeof(SomeEnum));当您需要做的只是枚举值时,此方法非常有用,但出于某种原因,它返回一个非常简单的Array类形式。我正在尝试找到一种简单的方法将其返回值转换为更“正常”的集合类,例如常规数组或List。到目前为止,如果我想这样做,我必须枚举Enum.GetValues(typeof(SomeEnum));的输出。并将它们一一添加到列表。有什么想法可以更干净地做到这一点吗?答案:关键是对返回结果进行强制转换--SomeEnum[]enums=(SomeEnum[])Enum.GetValues(typeof(SomeEnu

c# - 将 system.array 对象转换为 int[] 字符串或其他类型的对象

我正在学习C#并试图理解它的“面向类型”方面。所以前几天我需要从一个方法中接收一个System.Array对象。然后我尝试使用它的单个对象,所以我尝试用索引来解决它。编译器不让,说System.Array对象不支持索引。但是Array不是所有数组的基类吗(System.Arrayonmsdn)?为什么int[]支持索引而Array[]不支持?下面是一些代码来演示这个问题:int[]intArray={1,2,3,4,5,6,7,8,9,10};intt;ArraysysArray;Console.WriteLine("{0}",intArray.GetType().ToString()

c# - LINQ Lambda 与查询语法性能

我今天在我的项目中看到了一个LINQ查询语法,它正在计算List中具有特定条件的项目,如下所示:inttemp=(fromAinpTaskswhereA.StatusID==(int)BusinessRule.TaskStatus.PendingselectA).ToList().Count();我想通过使用Count(Func)重写它来重构它以使其更具可读性。我认为这在性能方面也会很好,所以我写道:intUnassignedCount=pTasks.Count(x=>x.StatusID==(int)BusinessRule.TaskStatus.Pending);但是当我使用Sto

c# - 为什么 .NET Core 2.0 的性能比 .NET Framework 4.6.1 差

我编写了一个创建4个线程的程序,每个线程将20.000个数字从低到高排序50次。我已在.NETCore2.0和.NETFramework4.6.1上多次运行此测试。在此测试中,.NETFramework始终优于.NETCore。设置.NETCore处于Release模式并已发布Windows10,i7双核,4线程(超线程)以下代码已用于对两个框架进行基准测试。staticvoidMain(){constintamountParallel=4;varglobalStopwatch=newStopwatch();globalStopwatch.Start();vartasks=newTas

c# - .NET 交叉程序集性能下降

我正在阅读BillWagner的书EffectiveC#。在Item32中,他提倡开发人员创建更小、更内聚的程序集,这些程序集可以更容易地重用。然而,在同一项目中,他说:...ExtraSecuritychecksalsoaredoneacrossassemblyboundaries.Allcodefromthesameassemblysamehasthesameleveloftrust(notnecessarilythesameaccessrights,butthesametruthlevel).TheCLRperformssomesecuritycheckswhenevercode

C# 反射 : how to get an array values & length?

FieldInfo[]fields=typeof(MyDictionary).GetFields();MyDictionary是一个静态类,所有字段都是字符串数组。如何获取每个数组的长度值,然后遍历所有元素?我尝试了这样的类型转换:fieldasArray但它会导致错误Cannotconverttype'System.Reflection.FieldInfo'to'System.Array'viaareferenceconversion,boxingconversion,unboxingconversion,wrappingconversion,ornulltypeconversion

c# - Array 中会发生装箱和拆箱吗?

我是编程新手,根据MSDN,Boxingistheprocessofconvertingavaluetypetothetypeobjectortoanyinterfacetypeimplementedbythisvaluetype.WhentheCLRboxesavaluetype,itwrapsthevalueinsideaSystem.Objectandstoresitonthemanagedheap.Unboxingextractsthevaluetypefromtheobject.Boxingisimplicit;unboxingisexplicit.我知道我们可以在数组列表中

C#:ToArray 性能

这个问题在这里已经有了答案:IsitbettertocallToList()orToArray()inLINQqueries?(16个答案)关闭9年前。背景:我承认我没有尝试对此进行基准测试,但我很好奇...Enumerable.ToArray的CPU/内存特性是什么?(及其表亲Enumerable.ToList)?自IEnumerable没有提前宣传它有多少元素,我(可能天真地)假设ToArray将不得不“猜测”一个初始数组大小,然后如果第一个猜测看起来太小则调整/重新分配数组,如果第二个猜测看起来太小则再次调整它的大小等等......这会给出比线性更差的性能。我可以想象涉及(混合)